# coding=utf-8
from datetime import datetime,timedelta
import random

from flask import current_app

from info import create_app,db,models
from flask_migrate import Migrate,MigrateCommand
from flask_script import Manager

from info.models import User

app = create_app("Develop")

# 创建manage对象,管理app
manager = Manager(app)

# 使用Migrate将app和数据库关联起来
Migrate(app, db)

# 添加操作命令，MigrateCommand
manager.add_command("db", MigrateCommand)

#给manager添加运行方法,为了创建管理员用户
#参数-u: 表示参数的名称用户名   --username: 对-n的解释说明
#参数-p: 表示参数名字密码   --password: 对-p的解释
#参数dest: 形式参数,用来在方法括号中接收传递的值
@manager.option('-p', '--password', dest='password')
@manager.option('-u', '--username', dest='username')
def create_superuser(username,password):

    #1,创建管理员对象
    user = User()
    user.nick_name = username
    user.password = password
    user.mobile = "18210094349"
    user.is_admin = True

    #2,保存到数据库中
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "创建失败"

    return "创建成功"


#添加测试用户
@manager.option('-t', '--test', dest='test')
def add_test_data(test):

    #0,定义用户列表
    user_list = []

    #1,创建管理员对象
    for i in range(0,999):
        user = User()
        user.nick_name = "老王%s"%i
        user.password_hash = "pbkdf2:sha256:50000$LZkLM1XI$5b866ce9e90b9a68d1b9e858ac3e562bdd280183f9dbd76a8925bff105c80884"
        user.mobile = "182%08d"%i
        user.last_login = datetime.now() - timedelta(seconds=random.randint(0,3600*24*31))
        user_list.append(user)

    #2,保存到数据库中
    try:
        db.session.add_all(user_list)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return "创建失败"

    return "创建成功"

if __name__ == '__main__':
    # print(app.url_map)
    manager.run()


